--[[
    雪月框架    -   入口
]]
xLua = {
    --当前环境 有以下三种
    --debug|test|release
    --默认为release 由于框架会动态编译 需要在 require 'xLua.Env' 加载全局环境后 才可以获取到正确的值
    Env = 'release',
    Version = '1.0',
}

---@alias func function function
---@alias fun function function
---@alias int int integer 整数
---@alias bool bool 布尔值

cj      =   require "jass.common"
hook    =   require "jass.hook"
japi    =   require 'jass.japi'
G       =   require 'jass.globals'
jslk    =   require 'jass.slk'

---@comment level 为 0 handle 会变成 int
if require 'jass.runtime'.handle_level == 0 then
    cj.GetHandleId = function (h)
        return h or 0
    end
end

            require 'xLua.Message'          --jass message的HOOK 主要鼠标键盘类

            require 'xLua.Common'
            
            require "xLua.Env" --全局环境 --根据编译的版本 编译器会自动复制对应的环境


            require 'xLua.cache.Init'           --缓存

timer     = require "xLua.module.Timer"         --中心计时器

            require "xLua.module.Sync"          --同步数据

trigger   = require "xLua.module.Trigger"       --触发器

eventpool = require "xLua.module.EventPool"     --事件池

rect      = require 'xLua.module.Rect'          --Rect

            require 'xLua.module.Player'        --玩家

item    =   require 'xLua.module.Item'          --物品

            require 'xLua.module.Unit'          --单位

destructable = require 'xLua.module.Destructable'   --可破坏物

fog     =   require 'xLua.module.Fog'           --可见度修正器

window  =   require 'xLua.module.Window'        --窗口

            require 'xLua.module.Event'         --事件

            require 'xLua.module.extends'       --扩展内容

            require 'xRect'                 --预处理xRect

keyboard =  require 'xLua.module.Keyboard'      --键盘事件

            require 'Mods'

--- 定期启动Lua的垃圾收集器 默认60秒
--- 通过设置gc.maxcycle = sec * 100 来改变回收速率
gc = timer:loop( 60, function (self)
    print('****定时释放内存****')
    local cur = collectgarbage("count")
    collectgarbage("collect")
    cur = cur - collectgarbage("count")
    printf( 'gc 释放:\t%f kb', cur )
end)


print('\t————\t雪月框架 - 加载完成\t————')